﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace EasyTrader.Form
{
    public partial class OrderSettings : System.Windows.Forms.Form
    {
        public OrderSettings()
        {
            InitializeComponent();
            InitControl();
        }

        private void InitControl()
        {
            if (GlobalVar.AutoOrder == true)
            {
                cbAutoOrder.Checked = true;
            }
            else
            {
                cbAutoOrder.Checked = false;
            }

            if (GlobalVar.LiquidMethod == GlobalVar.LiquidByPercent)
            {
                radioLiquidByPercent.Checked = true;
            }
            else if (GlobalVar.LiquidMethod == GlobalVar.LiquidByPrice)
            {
                radioLiquidByPrice.Checked = true;
            }
            else
            {
                radioLiquidByBoth.Checked = true;
            }

            if (GlobalVar.LiquidApply == true)
            {
                cbLiquidApply.Checked = true;
            }
            else
            {
                cbLiquidApply.Checked = false;
            }

            if (GlobalVar.PerProfitLiquidApply == true)
            {
                cbPerProfitLiquidApply.Checked = true;
            }
            else
            {
                cbPerProfitLiquidApply.Checked = false;
            }

            if (GlobalVar.PerLossLiquidApply == true)
            {
                cbPerLossLiquidApply.Checked = true;
            }
            else
            {
                cbPerLossLiquidApply.Checked = false;
            }

            int selectedIndex = comboLossStop.FindString(GlobalVar.AutoLossStopPrice.ToString());
            comboLossStop.SelectedIndex = selectedIndex;

            selectedIndex = comboAutoOrderAmount.FindString(GlobalVar.AutoOrderAmount.ToString());
            comboAutoOrderAmount.SelectedIndex = selectedIndex;

            selectedIndex = comboProfitStop.FindString(GlobalVar.AutoProfitStopPrice.ToString());
            comboProfitStop.SelectedIndex = selectedIndex;

            selectedIndex = comboProfitStopAll.FindString(GlobalVar.ProfitStopAll.ToString());
            comboProfitStopAll.SelectedIndex = selectedIndex;

            selectedIndex = comboLossStopAll.FindString(GlobalVar.LossStopAll.ToString());
            comboLossStopAll.SelectedIndex = selectedIndex;

            double liquidPercent = GlobalVar.LiquidPercent * 100.0;
            selectedIndex = comboLiquidPercent.FindString(liquidPercent.ToString());
            comboLiquidPercent.SelectedIndex = selectedIndex;

            selectedIndex = comboFare.FindString(GlobalVar.Fare.ToString());
            comboFare.SelectedIndex = selectedIndex;

            comboOrderCond.SelectedIndex = GlobalVar.OrderCond;

            comboOrderType.SelectedIndex = GlobalVar.OrderType - 1;

            selectedIndex = comboSlipage.FindString(GlobalVar.Slipage.ToString());
            comboSlipage.SelectedIndex = selectedIndex;

            comboOrderStartHour.SelectedIndex = GlobalVar.OrderStartHour;
            comboOrderStartMin.SelectedIndex = GlobalVar.OrderStartMin;

            comboOrderEndHour.SelectedIndex = GlobalVar.OrderEndHour;
            comboOrderEndMin.SelectedIndex = GlobalVar.OrderEndMin;

            comboOrderStartSignal.SelectedIndex = GlobalVar.OrderStartSignal;
            comboOrderEndSignal.SelectedIndex = GlobalVar.OrderEndSignal;
        }

        private void cbAutoOrder_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbAutoOrder.Checked == true)
            {
                selText = "True";
                GlobalVar.AutoOrder = true;
            }
            else
            {
                selText = "False";
                GlobalVar.AutoOrder = false;
            }
            

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("AutoOrder", selText);
        }

        private void comboAutoLossStop_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboLossStop.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.AutoLossStopPrice = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("AutoLossStop", GlobalVar.AutoLossStopPrice.ToString());
        }

        private void comboAutoOrderAmount_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboAutoOrderAmount.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.AutoOrderAmount = Convert.ToInt32(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("AutoOrderAmount", GlobalVar.AutoOrderAmount.ToString());
        }

        private void comboAutoProfitStop_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboProfitStop.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.AutoProfitStopPrice = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("AutoProfitStop", GlobalVar.AutoProfitStopPrice.ToString());
        }

        private void comboFare_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboFare.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.Fare = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("Fare", GlobalVar.Fare.ToString());
        }

        private void comboOrderType_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderType.SelectedIndex;

            GlobalVar.OrderType = selectedIndex + 1;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderType", GlobalVar.OrderType.ToString());
        }

        private void comboOrderCond_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderCond.SelectedIndex;

            GlobalVar.OrderCond = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderCond", GlobalVar.OrderCond.ToString());
        }

        private void comboSlipage_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboSlipage.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.Slipage = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("Slipage", GlobalVar.Slipage.ToString());
        }

        private void comboOrderStartHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartHour.SelectedIndex;

            GlobalVar.OrderStartHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartHour", GlobalVar.OrderStartHour.ToString());
        }

        private void comboOrderStartMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartMin.SelectedIndex;

            GlobalVar.OrderStartMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartMin", GlobalVar.OrderStartMin.ToString());
        }

        private void comboOrderEndHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndHour.SelectedIndex;

            GlobalVar.OrderEndHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndHour", GlobalVar.OrderEndHour.ToString());
        }

        private void comboOrderEndMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndMin.SelectedIndex;

            GlobalVar.OrderEndMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndMin", GlobalVar.OrderEndMin.ToString());
        }

        private void cbLiquidApply_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbLiquidApply.Checked == true)
            {
                selText = "True";
                GlobalVar.LiquidApply = true;
                //radioLiquidByBoth.Enabled = true;
                //radioLiquidByPercent.Enabled = true;
                //radioLiquidByPrice.Enabled = true;
                //comboAutoLossStop.Enabled = true;
                //comboAutoProfitStop.Enabled = true;
                //comboLiquidPercent.Enabled = true;
            }
            else
            {
                selText = "False";
                GlobalVar.LiquidApply = false;
                //radioLiquidByBoth.Enabled = false;
                //radioLiquidByPercent.Enabled = false;
                //radioLiquidByPrice.Enabled = false;
                //comboAutoLossStop.Enabled = false;
                //comboAutoProfitStop.Enabled = false;
                //comboLiquidPercent.Enabled = false;
            }

            
            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidApply", selText);
        }

        private void radioLiquidByPercent_CheckedChanged(object sender, EventArgs e)
        {
            comboLossStop.Enabled = false;
            comboProfitStop.Enabled = false;
            comboLiquidPercent.Enabled = true;
            GlobalVar.LiquidMethod = GlobalVar.LiquidByPercent;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidMethod", GlobalVar.LiquidMethod.ToString());
        }

        private void radioLiquidByPrice_CheckedChanged(object sender, EventArgs e)
        {
            comboLossStop.Enabled = true;
            comboProfitStop.Enabled = true;
            comboLiquidPercent.Enabled = false;
            GlobalVar.LiquidMethod = GlobalVar.LiquidByPrice;
            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidMethod", GlobalVar.LiquidMethod.ToString());
        }

        private void radioLiquidByBoth_CheckedChanged(object sender, EventArgs e)
        {
            comboLossStop.Enabled = true;
            comboProfitStop.Enabled = true;
            comboLiquidPercent.Enabled = true;
            GlobalVar.LiquidMethod = GlobalVar.LiquidByBoth;
            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidMethod", GlobalVar.LiquidMethod.ToString());
        }

        private void comboLiquidPercent_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboLiquidPercent.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.LiquidPercent = Convert.ToDouble(selText) / 100.0;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }
            double liquidPercent = GlobalVar.LiquidPercent * 100.0;
            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidPercent", liquidPercent.ToString());
        }

        private void comboOrderStartSignal_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartSignal.SelectedIndex;

            GlobalVar.OrderStartSignal = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartSignal", GlobalVar.OrderStartSignal.ToString());
        }

        private void comboOrderEndSignal_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndSignal.SelectedIndex;

            GlobalVar.OrderEndSignal = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndSignal", GlobalVar.OrderEndSignal.ToString());
        }

        private void cbLiquidApplyAll_CheckedChanged(object sender, EventArgs e)
        {
            /*
            string selText = "";
            if (cbLiquidApplyAll.Checked == true)
            {
                selText = "True";
                GlobalVar.LiquidApplyAll = true;
            }
            else
            {
                selText = "False";
                GlobalVar.LiquidApplyAll = false;
            }


            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidApplyAll", selText);
             */
        }

        private void comboLossStopAll_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboLossStopAll.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.LossStopAll = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LossStopAll", GlobalVar.LossStopAll.ToString());
        }

        private void comboProfitStopAll_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboProfitStopAll.SelectedItem.ToString();
            if (selText == "")
                return;
            GlobalVar.ProfitStopAll = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("ProfitStopAll", GlobalVar.ProfitStopAll.ToString());
        }

        private void cbPerLossLiquidApply_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbPerLossLiquidApply.Checked == true)
            {
                selText = "True";
                GlobalVar.PerLossLiquidApply = true;
            }
            else
            {
                selText = "False";
                GlobalVar.PerLossLiquidApply = false;
            }


            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("PerLossLiquidApply", selText);
        }

        private void cbPerProfitLiquidApply_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbPerProfitLiquidApply.Checked == true)
            {
                selText = "True";
                GlobalVar.PerProfitLiquidApply = true;
            }
            else
            {
                selText = "False";
                GlobalVar.PerProfitLiquidApply = false;
            }


            string regSubkey = "Software\\EasyTrader\\Order";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("PerProfitLiquidApply", selText);
        }
    }
}
